package com.fuyao.cloud.admin.flow.service.flowable;

import com.baomidou.mybatisplus.extension.service.IService;
import com.fuyao.cloud.admin.flow.model.ExtendProcinst;
import com.fuyao.cloud.common.core.flowable.dto.StartProcessInstanceParamsDTO;
import com.fuyao.cloud.common.core.flowable.enums.ProcessStatusEnum;
import org.flowable.engine.runtime.ProcessInstance;

/**
 * <p>
 *  服务类
 * </p>
 *
 */
public interface IExtendProcinstService extends IService<ExtendProcinst> {
    /**
     * 通过流程实例删除运行时的扩展信息
     * @param processInstanceId 流程实例id
     */
    void deleteExtendProcinstByProcessInstanceId(String processInstanceId) ;

    /**
     * 保存流程实例扩展信息和历史流程实例扩展信息
     * @param extendProcinst 扩展信息
     */
    void saveExtendProcinstAndHis(ExtendProcinst extendProcinst) ;

    /**
     * 修改扩展信息的状态
     * @param processStatus 状态
     * @param processInstanceId 流程实例id
     */
    void updateStatus(ProcessStatusEnum processStatus, String processInstanceId) ;

    /**
     * 通过流程实例获取运行时的扩展信息
     * @param processInstanceId 流程实例id
     * @return
     */
    ExtendProcinst findExtendProcinstByProcessInstanceId(String processInstanceId) ;


    /**
     * 创建流程实例扩展表信息
     *
     * @param params          启动参数
     * @param processInstance 流程实例对象
     * @param creator         创建人
     * @throws Exception
     */
    String createExtendProcinst(StartProcessInstanceParamsDTO params, ProcessInstance processInstance, String creator);
}
